#!/sbin/openrc-run
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

# reconfig is what the upstream documentation suggests, so let's
# provide it for compatibility.
extra_started_commands="reload reconfig"

depend() {
	need net
	before squid
	use logger
}

get_config() {
	awk '$1 == "'$1'" { print $2 }' "/etc/ufdbGuard.conf"
}

gentables() {
	local dbhome=$(get_config dbhome)

	for gt in ${UFDB_GT} ; do
		[ -f "${dbhome}/${gt}/domains" ] || continue

		urls=
		[ -f "${dbhome}/${gt}/urls" ] && urls="${dbhome}/${gt}/urls"

		ebegin "Generating domainlist ${gt}"
		ufdbGenTable ${GENTABLE_OPTIONS} -t "${gt}" -d "${dbhome}/${gt}/domains" ${urls:+-u "${urls}"}
		eend $?
	done
}

start() {
	gentables

    local logdir=$(get_config logdir)

	if [ ! -d "${logdir}" ] ; then
		mkdir -p ${logdir}
		chown -R ${UFDB_USER} ${logdir}
	fi

	if [ ! -d /var/run/ufdbguardd ] ; then
		mkdir -p /var/run/ufdbguard
		chown -R ${UFDB_USER} /var/run/ufdbguard
	fi

	ebegin "Starting ufdbGuard"
	start-stop-daemon --start \
		--user ${UFDB_USER} \
		--wait 1500 \
		--exec /usr/libexec/ufdbguard/ufdbguardd \
		--pidfile /var/run/ufdbguard/ufdbguardd.pid -- \
		-c /etc/ufdbGuard.conf ${UFDB_OPTS}
	eend $? "Failed to start ufdbGuard"
}

stop() {
	ebegin "Stopping ufdbGuard"
	start-stop-daemon --stop \
		--exec /usr/libexec/ufdbguard/ufdbguardd \
		--pidfile /var/run/ufdbguard/ufdbguardd.pid
	eend $? "Failed to stop ufdbGuard"
}

reload() {
	if ! [ -f /var/run/ufdbguard/ufdbguardd.pid ]; then
		eerror "Unable to find PID file for ufdbguardd, was it just started?"
		return 1
	fi

	gentables

	ebegin "Reloading ufdbGuard"
	kill -HUP "$(cat /var/run/ufdbguard/ufdbguardd.pid)"
	eend $? "Failed to reload ufdbGuard"
}

reconfig() {
	reload
}
